<?php
/**
 * 链接地址处理类
 * 
 * @version $Id: Url.php 381 2012-09-14 07:32:28Z linsir123 $
 * @package Common
 */
class lpUrl
{
	/**
	 * 返回路由对应链接
	 * 
	 * @param string $route 路由信息
	 * @param array $params 参数列表
	 * @param bool $full 是否包含完整的域名信息
	 * @return string
	 * @static 
	 */
	static function __($route = '', $params = array(), $full = false)
	{
		return App::getRequest()->create($route, $params, $full);
	}
	
	/**
	 * 打印路由对应链接
	 * 
	 * @param string $route 路由信息
	 * @param array $params 参数列表
	 * @param bool $full 是否包含完整的域名信息
	 * @static 
	 */
	static function _e($route = '', $params = array(), $full = false)
	{
		$url = self::__($route, $params, $full);
		///
		echo $url;
	}
	
	/**
	 * 跳转路由对应链接
	 * 
	 * @param string $route 路由信息
	 * @param array $params 参数列表
	 * @param bool $full 是否包含完整的域名信息
	 * @static 
	 */
	static function _r($route = '', $params = array(), $full = false)
	{
		$url = self::__($route, $params, $full);
		///
		self::redirect($url);
	}
	
	/**
	 * 跳转到指定的链接
	 * 
	 * @param string $url 跳转的地址
	 * @param int $delay 延时时间
	 * @static 
	 */
	static function redirect($url, $delay = 0)
	{
	    if (headers_sent() || $delay > 0) 
        	echo '<html><head><meta http-equiv="refresh" content="', $delay, ';URL=', $url, '" /></head></html>';
        else 
            header("Location:". $url);
            
	    ///
	    exit();
	}
	
	/**
	 * 提供Smarty中构造链接的扩展函数
	 * 
	 * 使用说明：其中a和c分别为控制器和控制器方法键值，不能随便改变
	 * @example <{url r="index/index" arg1="" arg2="" ...}>
	 * 
	 * @param array $params 参数列表
	 * @return string
	 * @static 
	 */
	static function smartyUrl($params)
	{
		$route = isset($params['r'])?trim($params['r']):'';
		$params = array_diff($params, array($route));
		///
		return self::__($route, $params);
	}
}
